package jp.co.neosystem.s2wg.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.seasar.framework.util.StringUtil;

/**
 * 日付関連ユーティリティクラス。
 */
public class DateUtil {

	/**
	 * 日付から年月を取得します。
	 * 
	 * @param date
	 *            日付
	 * @return 年月文字列
	 */
	public static String getYM(final Date date) {
		if (date == null) {
			return "";
		}

		final SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
		return format.format(date);
	}

	/**
	 * 日付文字列に変換します。
	 * 
	 * @param date
	 *            日付
	 * @return yyyy/MM/dd変換文字列
	 */
	public static String format(final Date date) {

		return DateUtil.format(date, "yyyy/MM/dd");
	}

	/**
	 * 日付文字列に変換します。
	 * 
	 * @param date
	 *            日付
	 * @param formatString
	 *            フォーマット文字列
	 * @return 変換文字列
	 */
	public static String format(final Date date, final String formatString) {
		if (date == null || StringUtil.isBlank(formatString)) {
			return "";
		}

		final SimpleDateFormat format = new SimpleDateFormat(formatString);

		return format.format(date);
	}

	public static java.sql.Date convert(final Date date, final String time) {
		final SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
		final SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmm");
		try {
			final Date d = format2.parse(format1.format(date)
					+ time.replaceAll(":", ""));
			return new java.sql.Date(d.getTime());
		} catch (final ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static Date convert(final String yearMonth, final String day) {
		final SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		
		try {
			return format.parse(yearMonth + day);
		} catch (final ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
}
